package com.qqtech.qquan.homemaking.service;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.homemaking.model.HomemakingBase;
import com.qqtech.qquan.homemaking.model.HomemakingBaseVo;
import com.qqtech.qquan.homemaking.model.HomemakingItem;

public interface HomemakingBaseService extends BaseService<HomemakingBase> {
	
	/**
	 * 保存家政
	 * @param homemakingBase 家政
	 * @param items 家政的项目
	 * @return
	 */
	public int addHomemakingBase(HomemakingBase homemakingBase, List<HomemakingItem> items);
	
	/**
	 * 更新家政
	 * @param homemakingBase 家政
	 * @param items 家政的项目
	 * @return
	 */
	public int updateHomemakingBase(HomemakingBase homemakingBase, List<HomemakingItem> items);
	
	/**
	 * <pre>
	 * 查询对象列表，注意：在给定非null的分页对象时该方法自动设置分页总记录数,如果query和pageable同时为null则查询所有
	 * </pre>
	 * 
	 * @param query
	 *            查询参数
	 * @param pageInfo
	 *            分页对象
	 * @return Page 信息方便前台显示 o
	 */
	public Page<HomemakingBaseVo> queryPageListByType(HomemakingBase query, Pageable pageable);
	
	/**
	 * 获取用户发布的家政数量
	 * @param userId
	 * @return
	 */
	public int myHomemakingBaseCount(Integer userId);
	
	/**
	 * 后台查询列表
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<HomemakingBaseVo> queryPageListAdminByType(HomemakingBase query, Pageable pageable);
	
	/**
	 * 判断用户是否发布过该类型的家政服务
	 * @param userId 用户id
	 * @param typeId 家政服务类型id
	 * @return 已经发布过返回true,没有则
	 */
	public boolean hasAddHomemakingBaseByType(Integer userId, Integer typeId);
	
	/**
	 * 根据条件获取可以预约的服务人员 数量
	 * @param query
	 * @return
	 */
	public int getCountByCanServise(HomemakingBase query);
	
	/**
	 * 根据条件获取可以预约的服务人员
	 * @param query
	 * @param pageable
	 * @return
	 */
	public Page<HomemakingBaseVo> queryPageListByCanServise(HomemakingBase query, Pageable pageable);
}